ARM Platforms: Load HW_CONFIG in BL2
authorSoby Mathew <[email protected]>
Mon, 15 Jan 2018 14:45:33 +0000 (14:45 +0000)
committerSoby Mathew <[email protected]>
Mon, 26 Feb 2018 16:31:11 +0000 (16:31 +0000)
commitcab0b5b0452556c9f7ba3fa98c233d3a6a62b023
tree7f373d294d652a62b4ec7fa508f50c24af37d831
parentc228956afa415685d7555578f252dfe4d0d1695e
ARM Platforms: Load HW_CONFIG in BL2

The patch adds the necessary changes to load HW_CONFIG in BL2 for
ARM Platforms :

1. The load address of HW_CONFIG is specified via the `hw_config_addr`
property in TB_FW_CONFIG is loaded by BL1. The `hw_config_max_size`
property defines the maximum size to be expected for the HW_CONFIG.
The `arm_dyn_cfg_helpers.c` and corresponding header implements
utility functions to parse these DT properties defined.
The `arm_dyn_cfg.c` implements wrappers to these helpers to enable
them to be invoked from ARM platform layer.

2. `HW_CONFIG` is added to the `bl2_mem_params_descs[]` array which is
the list of images to be loaded by BL2.

3. The `libfdt` sources are now included when BL2 is built

4. A new helper `populate_next_bl_params_config()` is introduced in
desc_image_load.c to populate the subsequent executable BL images
with the `hw_config` and the corresponding `fw_config` if available.
The `plat_get_next_bl_params()` API for ARM platforms is modified to
invoke this new helper.

5. The implementation of `bl2_early_platform_setup2()` is modified to
consider `arg0` as well in addition to `arg1` passed from BL1.

6. Bump up the BL2 size for Juno to accommodate the inclusion of libfdt.

Change-Id: I80f1554adec41753e0d179a5237364f04fe13a3f
Signed-off-by: Soby Mathew <[email protected]>
16 files changed:
common/desc_image_load.c
include/common/desc_image_load.h
include/plat/arm/board/common/board_arm_def.h
include/plat/arm/common/arm_dyn_cfg_helpers.h [new file with mode: 0644]
include/plat/arm/common/plat_arm.h
plat/arm/board/fvp/fvp_bl2_setup.c
plat/arm/board/fvp/fvp_io_storage.c
plat/arm/board/juno/include/platform_def.h
plat/arm/common/aarch32/arm_bl2_mem_params_desc.c
plat/arm/common/aarch64/arm_bl2_mem_params_desc.c
plat/arm/common/arm_bl2_setup.c
plat/arm/common/arm_common.mk
plat/arm/common/arm_dyn_cfg.c
plat/arm/common/arm_dyn_cfg_helpers.c [new file with mode: 0644]
plat/arm/common/arm_image_load.c
plat/arm/common/arm_io_storage.c